//
//  NSDate+Sina.swift
//  YJWeiBo
//
//  Created by Jim1024 on 2017/1/18.
//  Copyright © 2017年 Jim1024. All rights reserved.
//

import Foundation

extension Date {
    static func dateWithSinaSting(_ dateString: String) -> Date {
        let formatter = DateFormatter()
        // 设置要转换的字符串的格式
        formatter.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        formatter.locale = Locale(identifier: "EN")
        let date = formatter.date(from: dateString) ?? Date()
        
        return date
    }
    
    /*
     刚刚(一分钟内)
     X分钟前(一小时内)
     X小时前(当天)
     昨天 HH:mm(昨天)
     MM-dd HH:mm(一年内)
     yyyy-MM-dd HH:mm(更早期)
     */
    func sinaDateDescription() -> String {
        let calendar = Calendar.current
        
        // 是否是当天
        if calendar.isDateInToday(self) {
            let timeInterval = Int(Date().timeIntervalSince(self))
            if timeInterval < 60 {
                return "刚刚"
            } else if timeInterval < 60 * 60 {
                return "\(timeInterval / 60)分钟前"
            } else {
                return "\(timeInterval / 60 / 60)小时前"
            }
        }
        
        // 后面3种都需要日期格式化
        var formatter = ""
        
        if calendar.isDateInYesterday(self) {
            formatter = "昨天 HH:mm"
        } else if (calendar as NSCalendar).compare(self, to: Date(), toUnitGranularity: NSCalendar.Unit.year) == ComparisonResult.orderedSame {
            // 同一年
            formatter = "MM-dd HH:mm"
        } else {
            formatter = "yyyy-MM-dd HH:mm"
        }
        
        let df = DateFormatter()
        df.locale = Locale(identifier: "EN")
        df.dateFormat = formatter
        
        return df.string(from: self)
    }
}
